package com.chuxuan.Math.Sort;

public class ShellSort extends Ordination{

    public	ShellSort(Integer ar[]){
        System.out.println("-----------ShellSort-----------");
        Sort(ar);
    }

    @Override
    public void Sort(Integer[] ar) {
        Integer a[]=ar.clone();
        double d1=a.length;
        int temp=0;
        while(true){
            d1= Math.ceil(d1/2);
            int d=(int) d1;
            for(int x=0;x<d;x++){
                for(int i=x+d;i<a.length;i+=d){
                    int j=i-d;
                    temp=a[i];
                    for(;j>=0&&temp<a[j];j-=d){
                        a[j+d]=a[j];
                    }
                    a[j+d]=temp;
                }
            }
            if(d==1)
                break;
        }

        this.ar=a;
//	System.out.println(Arrays.toString( a));
    }
}
